package com.nuanshui.heatedloan.msgcenter.facade;

import com.nuanshui.heatedloan.msgcenter.form.MessageInfoForm;
import com.nuanshui.heatedloan.msgcenter.model.MessageInfo;
import com.nuanshui.heatedloan.msgcenter.model.MsgBizType;
import com.nuanshui.heatedloan.msgcenter.vo.MessageInfoVO;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface MessageService {
    /**
     * 增加消息
     * @param messageInfo 消息信息
     * @param userIds 影响到的用户
     */
    void addMsgInfo(MessageInfoForm messageInfo, List<String> userIds);

    /**
     * 删除消息
     * @param messageInfo 消息内容
     */
    void delMsgInfo(MessageInfo messageInfo);

    /**
     * 获取用户的未读通知
     * @param userId 用户id
     * @param feedMessageTypeList 通知类型列表
     * @param pageable 页码
     * @return
     */
    List<MessageInfoVO> getMessageByUserIdAndType(String userId, List<String> feedMessageTypeList, Pageable pageable);

    /**
     * 获取用户列表的的动态
     * @param userIds 用户列表
     * @param currentUserId 当前用户
     * @param feedMessageTypeList 动态的类型
     * @param pageable 页码
     * @
     */
    List<MessageInfoVO> getMessageByUserIdsAndType(List<String> userIds, String currentUserId, List<String> feedMessageTypeList, Pageable pageable);


    List<MessageInfoVO> findFriendMessage(List<String> userIds, String currentUserId, List<String> typelist, Pageable pageable);
    
    /**
     * 获取用户的维护消息列表
     * @Author: Gonzo
     * @Date 2017/4/5下午5:27
     * @since 1.4.2
     */
    List<MessageInfoVO> loadUserMaintainMsg(String userId, Pageable page);

    /***
     * 维护消息处理类
     * @param messageInfoVO
     */
    void handlerMessageInfo(MessageInfoVO messageInfoVO);

    /**
     * 重置用户消息状态,去除红点和未读取个数
     * @param userId
     * @param msgType
     */
    void resetUserStatus(String userId, MsgBizType msgType);

}
